package so.sao.shop.supplier.service;

import so.sao.shop.supplier.domain.PurchaseItem;
import so.sao.shop.supplier.pojo.Result;
import so.sao.shop.supplier.pojo.output.RecordToPurchaseItemOutput;
import so.sao.shop.supplier.pojo.vo.PurchaseItemVo;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * Created by niewenchao on 2017/7/19.
 */
public interface PurchaseItemService {

    /**
     * 根据订单编号查询所有相关的订单明细记录（分页）
     * @param pageNum 当前页码
     * @param pageSize 每页显示条数
     * @param orderId 订单编号
     * @return 相关记录的集合
     */
    Result<RecordToPurchaseItemOutput> searchPurchaseItems(Integer pageNum, Integer pageSize, String orderId);

    /**
     * 更新SKU子订单的状态
     * @param orderId 订单ID/SKU的退/换货单号
     * @param refundDate 退款时间
     * @param obj 订单详情实体/订单详情list
     */
    void updateSKUOrder(String orderId, Date refundDate, Object obj, BigDecimal amount);

    /**
     * 根据订单ID获取退款中的SKU订单列表
     * @param orderIds 订单ID集合
     * @return  List<PurchaseItemVo> SKU订单集合
     */
    List<PurchaseItemVo> getRefundingOrderDetailByOIds(List<String> orderIds);
    /**
     * 根据子订单状态查找子订单记录
     * @param status 子订单状态
     * @return
     */
    List<PurchaseItem> getOrderDetailsByStatus(Integer status);

    /**
     * 根据子订单编号集合及子订单状态批量修改子订单记录
     * @param detailsIds 子订单编号
     * @param status 子订单状态
     * @return
     */
    int updateOrderDetailsStatus(List<String> detailsIds, Integer status);
}
